#define _CRT_SECURE_NO_WARNINGS 1

#include"Heap.h"

//void HeapSort(int* arr, int size)
//{
//	/*for (int i = 1; i < size; i++)
//	{
//		AdjustUp(arr, i);
//	}*/
//	for (int i = (size - 1 - 1) / 2; i >= 0; i--)
//	{
//		AdjustDown(arr, i, size);
//	}
//
//	int end = size - 1;
//	while(end > 0)
//	{
//		Swap(&arr[0], &arr[end]);
//		AdjustDown(arr, 0, end);
//		--end;
//	}
//}
//
//int main()
//{
//	int arr[] = { 5, 7, 8, 2, 9, 10, 2, 21, 1, 0 };
//	int size = sizeof(arr) / sizeof(arr[0]);
//	HeapSort(arr, size);
//	for (int i = 0; i < size; i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	return 0;
//}

#include<time.h>

void CreatNData()
{
	int n = 10000;
	srand((unsigned int)time(NULL));
	FILE* fin = fopen("data.txt", "w");
	if (fin == NULL)
	{
		perror("fopen fail");
		return;
	}
	for (int i = 0; i < n; i++)
	{
		int x = rand() % 10000;
		fprintf(fin, "%d\n", x);
	}
	fclose(fin);
}

void PrintfTopK(int k)
{
	FILE* fout = fopen("data.txt", "r");
	if (fout == NULL)
	{
		perror("fopen fail");
		return;
	}
	int* a = (int*)malloc(sizeof(int) * k);
	if (a == NULL)
	{
		perror("malloc fail");
		return;
	}
	for (int i = 0; i < k; i++)
	{
		fscanf(fout, "%d", &a[i]);
	}
	for (int i = (k - 2) / 2; i >= 0; i--)
	{
		AdjustDown(a, i, k);
	}
	while (!feof(fout))
	{
		int val = 0;
		fscanf(fout, "%d", &val);
		if (val > a[0])
		{
			a[0] = val;
			AdjustDown(a, 0, k);
		}
	}
	for (int i = 0; i < k; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");

	fclose(fout);
}  

int main()
{
	//CreatNData();
	PrintfTopK(5);
	return 0;
}